.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

' 清除数组 (r)
' t ＝ 取启动时间 ()
' Cmn (strArr, 12, r, , , )  ' 25选12 = C25(12) = 5200300种
' 调试输出 (取数组成员数 (r), 取启动时间 () － t)

' 清除数组 (r)
' strArr ＝ { “1”, “2”, “3”, “4”, “5” }
' ' 附赠m^n次塞满 下示例为 5^4=625 种
' t ＝ 取启动时间 ()
' mPowern (strArr, 4, r, , )
' 调试输出 (取数组成员数 (r), 取启动时间 () － t)

.子程序 Cmn, , , m选n。
.参数 stringArray, 文本型, 数组, 字符数组，调用前须确保数组为空
.参数 digit, 整数型, , 即n。确保digit≤m，即字符数组的长度。
.参数 result, 文本型, 参考 数组, 返回结果
.参数 buff, 文本型, 参考 可空, 字符串缓存，无需填写
.参数 level, 整数型, 可空, 层次缓存，无需填写
.参数 index, 整数型, 可空, 索引缓存，无需填写
.局部变量 i, 整数型

level ＝ level ＋ 1

.如果 (level ＝ digit)
    .变量循环首 (index ＋ 1, 取数组成员数 (stringArray), 1, i)
        加入成员 (result, buff ＋ stringArray [i])
    .变量循环尾 ()
.否则
    .变量循环首 (index ＋ 1, 取数组成员数 (stringArray) － digit ＋ level, 1, i)
        Cmn (stringArray, digit, result, buff ＋ stringArray [i], level, i)
    .变量循环尾 ()
.如果结束


.子程序 mPowern, , , m^n
.参数 stringArray, 文本型, 数组, 字符数组，调用前须确保数组为空
.参数 digit, 整数型, , 塞满位数
.参数 result, 文本型, 参考 数组, 返回结果
.参数 buff, 文本型, 参考 可空, 字符串缓存，无需填写
.参数 level, 整数型, 可空, 层次缓存，无需填写
.局部变量 i, 整数型

level ＝ level ＋ 1
.计次循环首 (取数组成员数 (stringArray), i)
    .如果 (level ＝ digit)
        加入成员 (result, buff ＋ stringArray [i])
    .否则
        mPowern (stringArray, digit, result, buff ＋ stringArray [i], level)
    .如果结束

.计次循环尾 ()

.子程序 _按钮1_被单击
.局部变量 strArr, 文本型, , "0"
.局部变量 r, 文本型, , "0"
.局部变量 t, 整数型
.局部变量 a, 整数型
.局部变量 返回数组, 文本型, , "0"


内存分配加速优化 (真)
strArr ＝ { “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “0”, “1”, “2”, “3”, “4”, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “0”, “1”, “2”, “3”, “4” }
t ＝ 取启动时间 ()
Cmn (strArr, 5, r, , , )  ' 25选5 = C25(5) = 53130种
.计次循环首 (取数组成员数 (r), a)

    文本_逐字分割 (r [a], 返回数组)
    .如果 (到整数 (返回数组 [1]) ＋ 到整数 (返回数组 [2]) ＋ 到整数 (返回数组 [3]) ＋ 到整数 (返回数组 [4]) ＋ 到整数 (返回数组 [5]) ＝ 10)
        调试输出 (25)
        跳出循环 ()
    .否则

    .如果结束


    ' 调试输出 (r [a])
.计次循环尾 ()
调试输出 (取数组成员数 (r), 取启动时间 () － t)


